package com.example.feign;

import com.example.entity.Product;
import com.example.feign.fallback.ProductFeignFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * 自动注入
 * feign会根据服务名从nacos负载均衡的访问
 */
@FeignClient(value = "service-product", fallback = ProductFeignFallback.class) // feign客户端  value指定微服务
public interface ProductFeignClient {

    /**
     * mvc注解两套逻辑
     * 1、标注在controller上是接收这样的请求
     * 2、标注在feignClient上是发送这样的请求
     * 调用其他服务的controller接口，可以直接复制该接口请求
     * 逻辑相反
     * @param id
     */
    @GetMapping("/product/{id}")
    Product getProductById(@PathVariable("id") Long id);
}
